@Allure
2年前 提问
1个回答

分布式系统模糊测试有哪些挑战

趣能一姐
2年前

分布式系统的模糊测试工作需要解决如下三个关键挑战:

  • 跨进程逻辑的反馈收集:为了准确收集反馈,需要分析驱动的插桩策略。插桩器针对多进程程序进行优化,在精确收集反馈信息的同时降低执行成本。由于分布式系统逻辑复杂,盲目生成随机输入不足以在可行的时间内覆盖源码。因此,模糊测试工具必须收集每个输入的反馈,以引导目标程序进入有趣的新路径。分布式系统由一组不断变化的组件构成;这些组件位于不同的进程中,运行在不同的主机上,并处理不同的请求。由于分布式系统的动态性,测试工具难以确定收集反馈的目标进程,更不用说在区分不同请求带来的不同语意了。

  • 动态进程集合的异常检测:为了检测异常,需要调试辅助的监视策略。监视器捕获新创建的进线程,并在不影响父子进程关系的情况下监视它们。要启动分布式系统,用户会首先调用启动器,启动器接下来会启动守护进程,而守护进程会最终创建工作进程。简而言之,在多阶段的初始化过程中,进程集合发生动态而难以预知的变化。因此,模糊测试工具无法确定是否发生了异常。此外,鉴于工作进程已经受到内置的守护进程的监控,模糊测试工具无法重复地监视工作进程的异常。

  • 无关进程的噪音消除:为了消除噪音,需要进程感知的调度策略。调度器将输入与处理它的进程关联在一起,从而在不重启目标系统的情况下,实现连续的模糊测试执行。通过频繁重新启动程序来消除噪音是不可行的。模糊测试工具通过不断生成输入来测试目标系统。由于输入的执行次数巨大,必须避免对分布式系统进行昂贵的重新启动。但是,传统的模糊测试加速方法不支持多进程分布式系统。针对库的模糊测试工具通常使用进程内测试,以降低每次执行输入时创建进程的成本。根据定义,显然进程内模糊不适用于多进程的分布式系统。